#ifndef __STAFF_H__
#define __STAFF_H__

#include <stdio.h>
#include <stdlib.h>

#define BUFSIZE     128
#define NAMELEN     50
#define PASSWDLEN   20
#define DATALEN     128
#define DBLEN       256

#define ERR(msg) do {   \
   perror(msg);         \
   printf("error: %s:%s:%d\n", __FILE__, __func__, __LINE__);   \
   exit(EXIT_FAILURE);  \
}while(0)               \

typedef struct staff_info {
    int     no;                 // 工号
    int     user_type;          // 用户类型 1=Admin 2=User
    char    name[NAMELEN];      // 姓名
    char    passwd[PASSWDLEN];  // 密码
    int     age;                // 年龄
    char    phone[DATALEN];     // 手机号
    char    addr[DATALEN];      // 地址
    char    join_at[DATALEN];   // 入职年月
    int     level;              // 等级
    char    position[DATALEN];  // 职位
    double  salary;             // 薪资
} staff_info_t;

typedef struct history_msg{

    char name[NAMELEN];
    char time[DATALEN];
    char words[BUFSIZE];

}hsg_t;


// 消息类型：普通用户登录 
#define	TYPE_USER_LOGIN     1
// 消息类型：管理员登录
#define	TYPE_ADMIN_LOGIN    2
// 消息类型：普通用户查询
#define TYPE_USER_SEARCH    3
// 消息类型：管理员查询
#define TYPE_ADMIN_SEARCH   4
// 消息类型：普通用户修改
#define TYPE_USER_MODIFY    5
// 消息类型：管理员修改
#define TYPE_ADMIN_MODIFY   6
// 消息类型：删除
#define TYPE_DELETE         7
// 消息类型：添加
#define TYPE_ADD            8
// 消息类型：获取历史记录
#define TYPE_HISTORY        9
// 消息类型：退出
#define TYPE_QUIT           10

// 服务器消息： 成功
#define SERVER_OK      11
// 服务器消息： 失败
#define SERVER_ERR     12
// 服务器消息： 结束
#define SERVER_FINNISH 13


typedef struct massage{
	
	staff_info_t    staff_info;         // 员工信息结构
    hsg_t           history;            // 历史记录结构体
	int             type;				// 消息类型
	char            msg[BUFSIZE];		// 消息内容（服务器端给客户端传递的消息）
    int             userid;             // 管理员用户ID

}msg_t;

#define ADMIN_NAME "admin"
#define ADMIN_PASSWD "aaaabbbb"

#endif
